<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>contains</title>
</head>
<body>
	<div id="p-node">
		<div id="c-node">子节点内容</div>
	</div>
	<script>
		// 兼容IE的方案
	    // IE6 IE8, 游离在DOM树外面的节点，如果访问parentNode就会抛错，所以使用try-catch语句
		function fixContains(a, b) {
		    try {
		        while ((b = b.parentNode)){
		            if (b === a){
		                return true;
		            }
		        }
		        return false;
		    } catch (e) {
		    	// 对于游离于DOM树外的文本节点，直接返回false就可以了，因为脱离了节点层次关系的判断返回
		        return false;
		    }
		}
		var pNode = document.getElementById("p-node");
		var cNode = document.getElementById("c-node").childNodes[0];
		alert(fixContains(pNode, cNode));
		alert(fixContains(document, cNode));
	</script>
</body>
</html>